<template>
  <nav class="navbar-dark bg-primary justify-content-between mb-4 px-4">
    <div class="navbar mx-auto w-75">
      <router-link class="navbar-brand" to="/">者也专栏</router-link>
      <ul v-if="!user.isLogin" class="list-inline mb-0">
        <li class="list-inline-item"><router-link to="/login" class="btn btn-outline-light my-2">登录</router-link></li>
        <li class="list-inline-item"><router-link to="/signup" class="btn btn-outline-light my-2">注册</router-link></li>
      </ul>
      <ul v-else class="list-inline mb-0">
        <li class="list-inline-item">
          <!-- 使用模板字符串 -->
          <dropdown :title="`您好 ${user.nickName}`">
            <dropdown-item closeAfterClick><router-link to="/create" class="dropdown-item">新建文章</router-link></dropdown-item>
            <dropdown-item closeAfterClick><router-link :to="`/column/${user.column}`" class="dropdown-item">我的专栏</router-link></dropdown-item>
            <!-- disabled 等价于 :disabled="true" -->
            <dropdown-item closeAfterClick><router-link to="/edit" class="dropdown-item">编辑资料</router-link></dropdown-item>
            <dropdown-item closeAfterClick><a href="#" class="dropdown-item" @click.prevent="handleLogout">退出登录</a></dropdown-item>
          </dropdown>
        </li>
      </ul>
    </div>
  </nav>
</template>
<script lang="ts">
import { defineComponent, PropType } from 'vue'
import { useRouter } from 'vue-router'
import store, { UserProps } from '../store'
import Dropdown from './Dropdown.vue'
import DropdownItem from './DropdownItem.vue'
import createMessage from './createMessage'

export default defineComponent({
  name: 'GlobalHeader',
  components: {
    Dropdown,
    DropdownItem
  },
  props: {
    user: {
      type: Object as PropType<UserProps>,
      required: true
    }
  },
  setup () {
    const router = useRouter()
    // 退出登录
    const handleLogout = () => {
      store.commit('logout')
      createMessage('退出登录成功！', 'success')
      setTimeout(() => {
        router.push('/')
      }, 2000)
    }
    return {
      handleLogout
    }
  }
})
</script>
